package collection

fun main() {
    val list = listOf(1, 2, 3, 4, 5)

    val map = list.map {
        //to关键字返回Pair<A, B>,所以执行完list的map函数后会返回一个value为Pair<A, B>的list
        //Iterable<Pair<K, V>>有一个toMap方法,可以转换为map集合
        it to "AA"
    }.toMap()
    println(map.toString())
    //LinkedHashMap从打印结果可知生成了一个LinkedHashMap对象,LinkedHashMap是HashMap的子类,LinkedHashMap存储有序数据
    //(先添加的在遍历的时候先取出)
    println(map::class.simpleName)

    val list1 = list.map {
        it * 2
    }

    val list2 = list.filter {
        it % 2 == 0
    }

    println(list1.toString())
    println(list2.toString())

    //使用asSequence可以提高程序运行的效率,因为filter函数不会生成中间变量
    val list3 = list.asSequence().filter { it % 2 == 0 }.map { it * 2 }.toList()
    println(list3.toString())

    //测试扩展函数
    val list5 = mutableListOf(1, 2, 3, 4, 5)
    list5.exchange(0, 1)
    println(list5)

    println(list5.sumIsEven)

    list5.run {

    }

    list5.let {

    }
}